package com.project.controller;


import com.project.bean.UserBean;
import com.project.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;

/**
 * 用户控制器
 */
@RestController
@RequestMapping("user")
public class UserController {
    @Autowired
    private IUserService service;
    /**
     * 当前登录用户
     */
    private UserBean loginUser = new UserBean();

    /**
     * 用户登录月
     *
     * @param userName 用户名
     * @param passWord 密码
     * @return 返回当前登录用户对象
     */
    @RequestMapping("login")
    public String login(String userName, String passWord, HttpSession session) {
        if (service.login(userName, passWord) != null) {
            loginUser = service.login(userName, passWord);
            session.setAttribute("loginUser", userName);
            return "ok";
        }
        return "no";
    }

    /**
     * @return 将当前登录用户对象反出
     */
    @RequestMapping("getUser")
    public UserBean getUser() {
        return loginUser;
    }

    /**
     * 修改当前登录用户对象的登录密码
     * 前端判断登录密码是否正确以及两次输入的密码是否一致
     * 修改成功后删除当前登录用户的session，并跳转到登录页面
     *
     * @param id       当前登录用户的id
     * @param passWord 当前登录用户修改后的密码
     * @param session  当前登录对象的session
     * @return 修改成功提示
     */
    @RequestMapping("updatePwd")
    public String updatePwd(int id, String passWord, HttpSession session) {
        service.updatePwd(id, passWord);
        session.removeAttribute("loginUser");
        return "ok";
    }

    /**
     * 查询所有用户
     *
     * @return 用户集合
     */
    @RequestMapping("findAll")
    public List<UserBean> findAll() {
        return service.findAll();
    }

    /**
     * 根据用户的id，与当前登录用户的对象进行判断，删除对象不能为当前登录用户
     *
     * @param id 用户id
     * @return OK 删除成功 ； NO 删除失败
     */
    @RequestMapping("del")
    public String del(int id) {
        if (service.del(id, loginUser)) {
            return "OK";
        }
        return "NO";
    }

    /**
     * 添加用户
     *
     * @param userName 用户名
     * @param name     用户的真实姓名
     * @param grade    用户权限
     * @return OK 添加成功
     */
    @RequestMapping("add")
    public String add(String userName, String name, String grade) {
        UserBean userBean = new UserBean(userName, name, grade);
        service.add(userBean);
        return "OK";
    }

    /**
     * 根据用户的id查询指定用户对象
     *
     * @param id 用户id
     * @return 用户对象
     */
    @RequestMapping("findById")
    public UserBean findById(int id) {
        return service.findById(id);
    }

    /**
     * 根据用户id，修改该用户的权限
     *
     * @param id    用户id
     * @param grade 权限
     * @return OK 修改成功
     */
    @RequestMapping("updateGrade")
    public String updateGrade(int id, String grade) {
        service.updateGrade(id, grade);
        return "OK";
    }
}
